<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 所有使用function声明的函数，都会直接提升到作用域最开始的位置被声明
    // console.log(fn);
    // function fn(){
    //     console.log("hello");
    // }
    // console.log(fn);
    
    

    // 所有使用var声明的变量，都会被提前到作用域最开始的位置被声明，原位赋值
    // console.log(a);
    // var a = 10;
    // console.log(a);




    // 赋值式创建函数：提升的是var的变量，function没有提升
    // console.log(fn)
    // var fn = function(){
    //     console.log("hello")
    // }
    // console.log(fn)

    // var声明的变量和function声明的函数重名
        // var提升的更高，所以function生效

    // console.log(a);
    // var a = "hello";
    // function a(){}
    // console.log(a);





    // ============
    // 所有使用function声明的函数，都会直接提升到作用域最开始的位置被声明
    // 所有使用var声明的变量，都会被提前到作用域最开始的位置被声明，原位赋值
    // 赋值式创建函数：提升的是var的变量，function没有提升
    // var和function重名：var提升的更高，所以function生效

    // (function(){
    //     console.log(a);             // f4     
    //     var a = "hello";
    //     console.log(a);             // hello     
    //     function a(){ 1 }
    //     console.log(a);             // hello     
    //     function a(){ 2 }
    //     console.log(a);             // hello     
    //     var a = function(){ 3 }
    //     console.log(a);             // f3     
    //     a = "world";
    //     console.log(a);             // world     
    //     function a(){ 4 }
    //     console.log(a);             // world     
    // })();
    // ↑↑↑等价于↓↓↓
    // (function(){
    //     var a;
    //     var a;
    //     function a(){ 1 }
    //     function a(){ 2 }
    //     function a(){ 4 }
    //     console.log(a);             // f4     
    //     a = "hello";
    //     console.log(a);             // hello     
    //     console.log(a);             // hello     
    //     console.log(a);             // hello     
    //     a = function(){ 3 }
    //     console.log(a);             // f3     
    //     a = "world";
    //     console.log(a);             // world     
    //     console.log(a);             // world     
    // })();




</script>
</html>